/**
 * @file dbtemps.c
 * @brief Fichier source du module dbtemps.
 *
 * @author Rachid Delory, Mamadou Keita, Florian Bernard
 */

/* *********************************************************************

                       Librairies de database                          

********************************************************************* */

#include "dbtemps.h"

/* *********************************************************************

                        Fonctions                                      

********************************************************************* */
void recuperation_DTem(Temps **temps, const int id)
{
  if(temps && id > 0)
    {
      DataBase data;
      ouvrir_Db();
      /* Récupération de ceux qui ont comme père id */
      prepare_Db(&data, "select rowid, heure, minute, seconde from temps where rowid = ?");
      bindValueInt_Db(&data, 1, id);

      while(execute_Db(&data))
	{				
	  if((*temps) == NULL)
	    (*temps) = creer_Tem();
	  setId_Tem((*temps), getValueInt_Db(&data, 0));
	  setHeure_Tem((*temps), getValueInt_Db(&data, 1));
	  setMinute_Tem((*temps), getValueInt_Db(&data, 2));
	  setSeconde_Tem((*temps), getValueInt_Db(&data, 3));
	}
      finalise_Db(&data);
    }
  else
    {
      (*temps) = NULL;
    }
}

void insertion_DTem(Temps *temps)
{
  if(temps)
    {
      DataBase data;
      ouvrir_Db();
      if(getSup_Tem(temps) == 1)
	{
	  suppression_DTem(getId_Tem(temps));
	  return;
	}
      if(getId_Tem(temps) == 0)
	{
	  prepare_Db(&data, "insert into temps (heure, minute, seconde) values (?, ?, ?)");
	}
      else
	{
	  if(getMaj_Tem(temps) == 1)
	    {
	      prepare_Db(&data, "update temps set heure = ?, minute = ?, seconde = ? where rowid = ?");
	      bindValueInt_Db(&data, 4, getId_Tem(temps));
	    }
	  else
	    return;
	}
      bindValueInt_Db(&data, 1, getHeure_Tem(temps));
      bindValueInt_Db(&data, 2, getMinute_Tem(temps));
      bindValueInt_Db(&data, 3, getSeconde_Tem(temps));
      if(execute_Db(&data))
	{

	}
      finalise_Db(&data);
      if(getId_Tem(temps) == 0)
	{
	  prepare_Db(&data, "select max(rowid) from temps");
	  if(execute_Db(&data))
	    {
	      setId_Tem(temps, getValueInt_Db(&data, 0));
	    }
	  finalise_Db(&data);
	}
    }
}

void suppression_DTem(const int id)
{
  if(id)
    {
      DataBase data;
      ouvrir_Db();
      prepare_Db(&data, "delete from temps where rowid = ?");
      bindValueInt_Db(&data, 1, id);
      if (execute_Db(&data))
        {
	  
        }
      finalise_Db(&data);
    }
}
